home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 May / EnigmA AMIGA RUN 27 (1998)(G.R. Edizioni)(IT)[!][issue 1998-05].iso / recent1 / gifani.lha / gifanim_datatype / encoder.h < prev    next >
C/C++ Source or Header  |  1998-04-13  |  3KB  |  96 lines

  1.  
  2. #ifndef ENCODER_H
  3. #define ENCODER_H 1
  4.  
  5. /*
  6. **
  7. **  $VER: encoder.h 2.2 (13.4.98)
  8. **  gifanim.datatype 2.2
  9. **
  10. **  GIF Encoder header of gifanim.datatype
  11. **
  12. **  Written 1997/1998 by Roland 'Gizzy' Mainz
  13. **  Original example source from David N. Junod
  14. **
  15. */
  16.  
  17. /* project includes */
  18. #include "classbase.h"
  19.  
  20. /* ansi includes */
  21. #include <limits.h>
  22. #include <ctype.h>
  23.  
  24. /*****************************************************************************/
  25.  
  26. /* General DEFINEs */
  27. #define HSIZE  (5003)            /* 80% occupancy */
  28.  
  29. /*****************************************************************************/
  30.  
  31. /* a code_int must be able to hold 2**BITS values of type int, and also -1 */
  32. typedef int      code_int;
  33. typedef long int count_int;
  34.  
  35. /*****************************************************************************/
  36.  
  37. /* encoder context data */
  38. struct GIFEncoder
  39. {
  40.     struct ClassBase   *classbase;
  41.  
  42.     Object             *object;
  43.     struct adtFrame     loadmsg;
  44.     struct BitMap      *srcbm;
  45.     UBYTE              *srcchunkymap[ 2 ],
  46.                        *currchunkymap;
  47.     struct RastPort     rpa8tmprp;
  48.     struct RastPort     rp;
  49.     UWORD               whichbm; /* which source bm ? */
  50.  
  51.     /* prefs */
  52.     BOOL                interlace;
  53.     WORD                backgroundpen;
  54.     WORD                transparentpen;
  55.  
  56.     /* attrs */
  57.  
  58.     ULONG               animwidth,
  59.                         animheight,
  60.                         animdepth,
  61.                         numcolors;
  62.     ULONG               tpf;
  63.     BPTR                outfile;
  64.  
  65.     int                 Width,
  66.                         Height;
  67.     int                 curx,
  68.                         cury;
  69.     long                CountDown;
  70.     int                 Pass/* = 0*/;
  71.     int                 Interlace;
  72.  
  73.     int                 n_bits;             /* number of bits/code */
  74.     code_int            maxcode;            /* maximum code, given n_bits */
  75.  
  76.     count_int           htab[ HSIZE ];
  77.     unsigned short      codetab[ HSIZE ];
  78.  
  79.     code_int            free_ent /* = 0*/;  /* first unused entry */
  80.  
  81.     /* block compression parameters -- after all codes are used up, and compression rate changes, start over. */
  82.     BOOL                clear_flg   /*  = 0*/;
  83.     int                 g_init_bits;
  84.     int                 ClearCode;
  85.     int                 EOFCode;
  86.  
  87.     unsigned long       cur_accum/* = 0*/;
  88.              int        cur_bits/*  = 0*/;
  89.  
  90.     char                accum[ 256 ]; /* Define the storage for the packet accumulator */
  91.     int                 a_count;      /* Number of characters so far in this 'packet'  */
  92. };
  93.  
  94. #endif /* !ENCODER_H */
  95.  
  96.